/**
 * 
 */
package pATT.SAVER.courseStruct;

import java.util.Vector;

/**
 * @author Ignacio
 *
 */
public class Unidad {
	private String nombre = "";
	private Vector<Tema> temas = null;
	
	public Unidad(String nombre, Vector<Tema> temas) {
		int pos = nombre.lastIndexOf(":");
		this.nombre = nombre.substring(pos + 1);

		this.temas = temas;
	}
	public String getNombre() {
		return nombre;
	}
	

	public Vector<Tema> getTemas() {
		return temas;
	}
	
	/**
	 * Retorna la instancia Unidad si es la buscada
	 * @param name
	 * @return
	 */
	public Unidad obtenerUnidad(String name){
		if(getNombre().equals(name)){
			return this;
		}
		return null;
	}

	/**
	 * Retorna la instancia Tema buscada si existe
	 * @param name
	 * @return
	 */
	public Tema obtenerTema(String name){
		Tema tema = null;
		Tema result = null;
		for (int i = 0; i < getTemas().size(); i++) {
			tema = getTemas().get(i);
			if((result = tema.obtenerTema(name)) != null){
				return result;
			}
		}
		return null;
	}
	/**
	 * Retorna el ID de la instancia Tema buscada si existe
	 * @param name
	 * @return
	 */
	public int obtenerIDTema(String name){
		Tema tema = null;
		for (int i = 0; i < getTemas().size(); i++) {
			tema = getTemas().get(i);
			if(tema.obtenerTema(name) != null){
				return i;
			}
		}
		return -1;
	}

	/**
	 * Retorna el tema siguiente
	 * @param name
	 * @return
	 */
	public Tema obtenerTemaSiguiente(int idTema){
		Tema tema = null;
		if(getTemas().size() > (idTema + 1)){
			tema = getTemas().get(idTema+1);
		}
		return tema;
	}

	/**
	 * Retorna la instancia Concepto buscada si existe
	 * @param name
	 * @return
	 */
	public Concepto obtenerConcepto(String name){
		Tema tema = null;
		Concepto result = null;
		for (int i = 0; i < getTemas().size(); i++) {
			tema = getTemas().get(i);
			if((result = tema.obtenerConcepto(name)) != null){
				return result;
			}
		}
		return null;
	}
	/**
	 * Retorna la instancia Tema si es la buscada, dado un Concepto
	 * @param nameConcepto
	 * @return
	 */
	public Tema obtenerTemaConcepto(String nameConcepto) {
		Tema tema = null;
		for (int i = 0; i < getTemas().size(); i++) {
			tema = getTemas().get(i);
			if(tema.obtenerConcepto(nameConcepto) != null){
				return tema;
			}
		}
		return null;

	}
	/**
	 * Son iguales si tienen el mismo nombre
	 */
	@Override
	public boolean equals(Object unidad) {
		Unidad obj = (Unidad)unidad; 
		if(this.getNombre().equals(obj.getNombre())){
//			if(this.getTemas().equals(unidad.getTemas())){
				return true;
//			}
		}
		return false;
	}

}
